package com.yyh2;
/*- 模拟工人挑苹果。
- 定义苹果类：
  - 属性：大小，颜色。
  - 提供基本的构造方法和get方法，set方法
- 定义接口CompareAble：
  - 定义默认方法compare，挑选打印较大苹果。
- 定义工人类：
  - 成员方法：挑选苹果public void pickApple(CompareAble c,Apple a1,Apple a2)。
- 测试类：
  - 创建两个Worker对象。
  - 创建两个Apple对象，一个Apple（5，"青色"）,一个Apple（3，"红色"）
  - 调用工人对象的pickApple方法，分别用匿名内部类实现接口的方式实现挑选苹果，分别实现挑选大的和挑选红色的
*/
public class Demo2 {
    public static void main(String[] args) {
        //创建两个Worker对象
        Worker w1 = new Worker();
        Worker w2 = new Worker();
        //创建两个Apple对象
        Apple a1 = new Apple(5,"青色");
        Apple a2 = new Apple(3,"红色");
        //调用工人对象的pickApple方法
        w1.pickApple(new CompareAble() {
            @Override
            public void compare(Apple a1, Apple a2) {
                if (a1.getSize() > a2.getSize()) {
                    System.out.println("挑选的苹果是：" + a1.getColor() + "，大小是：" + a1.getSize());
                } else {
                    System.out.println("挑选的苹果是：" + a2.getColor() + "，大小是：" + a2.getSize());
                }
            }
        }, a1, a2);
    }
}
//定义苹果类
class Apple{
    //属性
    //大小
    private int size;
    //颜色
    private String color;
    //构造方法
    public Apple() {
    }
    public Apple(int size, String color) {
        this.size = size;
        this.color = color;
    }
    //get and set方法
    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }
}
//定义接口CompareAble
interface CompareAble{
    //定义默认方法
    default void compare(Apple a1,Apple a2){
        //挑选打印较大苹果
        if(a1.getSize()>a2.getSize()){
            System.out.println("挑选的苹果是："+a1.getColor()+"，大小是："+a1.getSize());
        }else{
            System.out.println("挑选的苹果是："+a2.getColor()+"，大小是："+a2.getSize());
        }
    }
}
//定义工人类
class Worker{
    //成员方法
    public void pickApple(CompareAble c,Apple a1,Apple a2){
        //挑选苹果
        c.compare(a1,a2);
    }
}
